package Leetcode.DayTest;

import java.util.*;

/**
 * @ClassName Test_426
 * @since: 2024/12/15 10:28
 * @auth: kirito
 * @description: 周赛428
 **/
public class Test_428 {
    public static void main(String[] args) {
        Test_428 test = new Test_428();


        int[][] arr = {
                {3, 2},
                {8, 6},
                {15, 7},
                {3, 11},
                {3, 12},
                {12, 14},
                {5, 15},
                {20, 16},
                {10, 17},
                {1, 20}
        };

        System.out.println(test.buttonWithLongestTime(arr));

    }
    public int buttonWithLongestTime(int[][] events) {
        // 使用Map来存储每个按钮按下的总时间
        Map<Integer, Integer> timeMap = new HashMap<>();
        // 初始化按下时间最长的按钮索引和最大时间
        int longestIndex = -1;
        int maxTime = 0;

        // 遍历events数组
        for (int i = 0; i < events.length; i++) {
            int index = events[i][0];
            int time = events[i][1];
            // 计算按下时间
            int pressTime;
            if (i == 0) {
                // 第一个按钮按下时间就是其时间戳
                pressTime = time;
            } else {
                // 其他按钮按下时间是当前时间减去前一个按钮的按下时间
                pressTime = time - events[i - 1][1];
            }
            // 更新Map中对应按钮的总按下时间
            timeMap.put(index,Math.max(timeMap.getOrDefault(index, 0),pressTime));
            // 更新最长按下时间和对应的按钮索引
            if (timeMap.get(index) > maxTime) {
                maxTime = timeMap.get(index);
                longestIndex = index;
            }
        }

        // 如果有多个按钮按下时间相同，返回索引最小的按钮
        for (Map.Entry<Integer, Integer> entry : timeMap.entrySet()) {
            if (entry.getValue().equals(maxTime) && entry.getKey() < longestIndex) {
                longestIndex = entry.getKey();
            }
        }

        return longestIndex;
    }

}
